From: Emilio Cobos Álvarez Date: Mon, 20 Jun 2022 08:11:29 +0000 (+0200) Subject: [x11] Fix coordinate space of rect in gdk_x11_surface_get_frame_extents when called... X-Git-Tag: archive/raspbian/4.8.3+ds-2+rpi1~3^2~81^2^2~109^2 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=5301a74bd3554612540ef7a59079a78e732644c5;p=gtk4.git [x11] Fix coordinate space of rect in gdk_x11_surface_get_frame_extents when called on popups. If we take the early return we don't unscale this at the bottom of the function, causing wrong coordinates in HiDPI screens. This bug also affects GTK3 (I noticed this running Firefox tests on X). --- diff --git a/gdk/x11/gdksurface-x11.c b/gdk/x11/gdksurface-x11.c index fb3b0bd7df..e21ba9b5b6 100644 --- a/gdk/x11/gdksurface-x11.c +++ b/gdk/x11/gdksurface-x11.c @@ -2793,14 +2793,19 @@ gdk_x11_surface_get_frame_extents (GdkSurface *surface, impl = GDK_X11_SURFACE (surface); /* Refine our fallback answer a bit using local information */ - rect->x = impl->abs_x * impl->surface_scale; - rect->y = impl->abs_y * impl->surface_scale; - rect->width = surface->width * impl->surface_scale; - rect->height = surface->height * impl->surface_scale; + rect->x = impl->abs_x; + rect->y = impl->abs_y; + rect->width = surface->width; + rect->height = surface->height; if (GDK_SURFACE_DESTROYED (surface) || impl->override_redirect) return; + rect->x *= impl->surface_scale; + rect->y *= impl->surface_scale; + rect->width *= impl->surface_scale; + rect->height *= impl->surface_scale; + nvroots = 0; vroots = NULL;